/**
 * 
 */
package com.mustafaiev.tair.cts.dao;

import java.util.List;

import com.mustafaiev.tair.cts.exeption.DataNotRemovedException;
import com.mustafaiev.tair.cts.model.Basket;

/**
 * @author tair
 * 
 */
public interface IBasketDAO extends ICostTrackingSystemDAO<Basket> {

	/**
	 * Retrieves all baskets from database
	 * 
	 * @return List<Basket>
	 */
	List<Basket> retrieveBaskets();

	/**
	 * Retrieves all baskets which are not in batch from database
	 * 
	 * @return List<Basket>
	 */
	List<Basket> retrieveNonBatchedBaskets();

	/**
	 * Retrieves baskets for batch
	 * 
	 * @param batchId
	 * @return List<Basket>
	 */
	List<Basket> retrieveBasketsForBatch(Long batchId);

	/**
	 * Retrieves basket by passed ID
	 * 
	 * @param basketId
	 *            {@link Long}
	 * @return Basket
	 */
	Basket retrieveBasket(Long basketId);

	/**
	 * Deletes batch of passed objects
	 * 
	 * @param baskets
	 */
	void deleteBatch(List<Basket> baskets) throws DataNotRemovedException;

}
